package org.patterns.behavior.observer;


/**
 * 具体战队控制中心类：具体目标类
 * 这个类代表了一个具体的战队控制中心，它继承自AllyControlCenter，
 * 主要负责创建战队并通知战队成员（观察者）对遭受攻击的盟友进行支援。
 */
public class ConcreteAllyControlCenter extends AllyControlCenter {
    /**
     * 构造函数，初始化战队名称并打印组建成功的消息。
     *
     * @param allyName 战队的名称
     */
    public ConcreteAllyControlCenter(String allyName) {
        System.out.println(allyName + "战队组建成功！");
        this.allyName = allyName;
    }

    /**
     * 实现通知方法，当某个盟友遭受攻击时，通知所有的盟友（除了自己）进行支援。
     *
     * @param name 遭受攻击的盟友的名称
     */
    public void notifyObserver(String name) {
        System.out.println(this.allyName + "战队紧急通知，盟友" + name + "遭受敌人攻击！");
        //遍历观察者集合，调用每一个盟友（自己除外）的支援方法
        for (Observer obs : players) {
            if (!obs.getName().equalsIgnoreCase(name)) {
                obs.help();
            }
        }
    }
}
